#ifndef __INPUT_H
#define __INPUT_H

#include "stm32f10x.h"

// 输入有效电平定义
#define INPUT_ACTIVE_HIGH 0   // 高电平有效
#define INPUT_ACTIVE_LOW  1   // 低电平有效

// 输入状态定义
#define INPUT_STATE_ACTIVE   1     // 输入有效状态
#define INPUT_STATE_INACTIVE 0     // 输入无效状态
#define INPUT_STATE_ERROR    255   // 输入错误

// 去抖次数
#define INPUT_SHAKE_MUN 5

// 输入通道结构体
typedef struct {
    GPIO_TypeDef*    GPIOx;         // GPIO端口
    uint16_t         GPIO_Pin;      // GPIO引脚
    uint8_t          activeLevel;   // 有效电平
    GPIOMode_TypeDef mode;          // 输入模式
    uint16_t         close_time;
    uint16_t         open_time;
    uint8_t          state;
} Input_Channel_t;

// 函数声明
void    Input_Init(void);
uint8_t Input_Read(uint8_t channel);
void    DIN_Proc(void);
uint8_t Get_input_state(uint8_t channel);
#endif /* __INPUT_H */
